package com.wy;

import org.springframework.web.client.RestTemplate;
import org.json.JSONObject;

public class IpApiService {

    /**
     * 查询指定 IP 的地理位置
     *
     * @param ip 要查询的 IP 地址
     * @return 地理位置字符串
     */
    public static String getGeoLocation(String ip) {
        // ip-api 的查询 URL
        String url = "http://ip-api.com/json/" + ip;

        try {
            // 使用 RestTemplate 发起 HTTP 请求
            RestTemplate restTemplate = new RestTemplate();
            String response = restTemplate.getForObject(url, String.class);

            // 解析 JSON 响应
            JSONObject json = new JSONObject(response);

            // 检查响应状态
            if ("success".equals(json.getString("status"))) {
                String country = json.optString("country", "N/A");
                String region = json.optString("regionName", "N/A");
                String city = json.optString("city", "N/A");
                double latitude = json.optDouble("lat", 0.0);
                double longitude = json.optDouble("lon", 0.0);

                return String.format("Country: %s, Region: %s, City: %s, Latitude: %.4f, Longitude: %.4f",
                        country, region, city, latitude, longitude);
            } else {
                return "Error: Unable to fetch location. Reason: " + json.getString("message");
            }
        } catch (Exception e) {
            e.printStackTrace();
            return "Error: Unable to connect to ip-api service.";
        }
    }

    public static void main(String[] args) {
        // 示例 IP 地址
        String ip = "114.246.236.19"; // 替换为需要查询的 IP
        System.out.println(getGeoLocation(ip));
    }
}
